package com.lynn.common.net.observer

import io.reactivex.rxjava3.core.Observer
import io.reactivex.rxjava3.disposables.Disposable

/**
 * @description: 自定义Observer
 * @author: bailing
 * @datetime: 2025/5/27 13:31
 **/
abstract class BaseObserver() : Observer<String> {


    private lateinit var mDisposable: Disposable

    /**
     * 它在观察者与被观察者建立订阅关系时被调用
     */
    override fun onSubscribe(d: Disposable) {
        // 保存Disposable对象以便后续取消订阅
        mDisposable = d
    }

    /**
     * 发送数据
     */
    override fun onNext(t: String) {
    }

    /**
     * 异常: 与onComplete()互斥
     * 在事件处理过程中出异常时，onError() 会被触发，同时队列自动终止，不允许再有事件发出。
     */
    override fun onError(e: Throwable) {
        // 这里可以处理常规逻辑，如有特殊的业务 可在接口调用的方法中重写该方法进行处理
        onFinish()
    }

    /**
     * 完成:  与onError()互斥
     * RxJava 规定，当不会再有新的onNext() 发出时，需要触发 onCompleted() 方法作为标志。
     */
    override fun onComplete() {
        // 对话框消失
        onFinish()
    }

    abstract fun onFinish()


}